﻿<html>
<head>
<meta http-equiv="Content-Type" content="text/html;utf-8" />
<link rel="stylesheet" type="text/css" href="styles/welcome.css" />
<script>
function more2less(el){
    var nc = switchClass(el,'more-','less-');
    while(el = el.previousSibling){
      if(el.nodeType == 1){
         el.style.display = nc == 'more-'?'none':'block';
         return false;
      }
    }
}
function switchClass(el,cls1,cls2){
    return el.className = el.className == cls1? cls2:cls1;
}
</script>
</head>
<body>
<h2>JSI API Tool && Export Tool.</h2>
<div>
<h3>基本功能</h3>
<ul>
  <li><span class='item-title'>API查阅</span>:
   该程序可以通过脚本源代码及注释。自动适时生成对应的JavaScript API文档。</li>
  <li><span class='item-title'>源码浏览</span>:
   你可以通过API文档内连接,进入相关实现代码。</li>
  <li><span class='item-title'><a href="html/controller.html?@export">脚本导出</a></span>:
   导出工具可以更据JSI的包文件,以正确的顺序,自动导出选中的脚本元素及其依赖。</li>
</ul>
</div>
<!--
<div>
<h3>脚本类型</h3>
<ul>
  <li><span class='item-title'>JSI脚本</span>:
   JSI引导脚本及其内部（外界不可见，仅为了解JSI而列出）对象</li>
  <li><span class='item-title'>托管脚本</span>:
   存在JSI包描述的，可以通过JSI的$import函数导入、在特定装载单元执行的脚本</li>
</ul>
</div>
-->

<div>
<h3>标签语法</h3>
<ul>
  JSIDoc的语法说明
  <pre>
  /**
   * &lt;描述信息&gt;
   * <b>@&lt;标签名称&gt;</b> &lt;标签信息[可多行]&gt;
   */
  </pre>
  <pre class="block" style="display:none">
  /**
   * 这里是元素、属性的描述信息.
   * 更多描述信息
   * @public
   * @constructor
   * @param &lt;number&gt; arg1 这里可以加上参数描述信息
   * @param &lt;number&gt; arg2
   * @param 
   */
   Math.max = function(arg1,arg2){
       return arg1>arg2?arg1:arg2;
   }
  </pre>
  <div onclick="more2less(this)" class="more-">
      <a href="#null" name="1" class="more-">实例...</a><a href="#null" class="less-" >↑收起</a>
  </div>
</ul>


<h3>常用标签参考</h3>
<ul>
	<h4>访问修饰(只是文档作用,没有语法限制)</h4>
	<ul>
	  <li><span class='item-title'>@public</span>: 公开元素，任何地方可以使用该元素</li>
	  <li><span class='item-title'>@private</span>: 私有元素，装载单元（文件）内部使用</li>
    </ul>
    <ul class="block" style="display:none">
        <li><span class='item-title'>@protected</span>: 保护元素，只能是继承它的子类调用（javascript原型继承）</li>
        <li><span class='item-title'>@friend</span>: 友元元素，可以在任何地方使用， 但是使用它意味着，你和这个类库紧密的关系，可以看成一种高级功能</li>
        <li><span class='item-title'>@intenal</span>: 内部元素，只能在这个类库内部使用，不建议第三方访问的元素</li>
     </ul>
     <ul onclick="more2less(this)" class="more-">
         <a href="#none" class="more-">更多...</a><a href="#none" class="less-" >↑收起</a>
     </ul>

    <h4>函数信息</h4>
    <ul>
      <li><span class='item-title'>@param</span>: 函数参数信息,如示例</li>
      <li><span class='item-title'>@return</span>: 函数返回类型信息，与@param 不同的是，无需名称</li>
    </ul><ul style="display:none" class="block">
          <pre>
  /**
   * 这里是元素、属性的描述信息.
   * 更多描述信息
   * @public
   * @constructor
   * @param &lt;number&gt; arg1 这里可以加上参数描述信息
   * @param &lt;number&gt; arg2
   * @param 
   */
   Math.max = function(arg1,arg2){
       return arg1>arg2?arg1:arg2;
   }
          </pre>
    </ul>
    <ul onclick="more2less(this)" class="more-">
          <a href="#null" class="more-">实例...</a><a href="#null" class="less-" >↑收起</a>
    </ul>

    <h4>类型暗示</h4>
    <ul>
      <li><span class='item-title'>@constructor</span>: 标识该元素为类（JS中叫构造器）</li>
      <li><span class='item-title'>@typeof</span>: 指定原始类型信息，类比javascript typeof 运算符</li>
      <li><span class='item-title'>@instanceof</span>: 指定类信息，类比javascript instanceof 运算符</li>
    </ul><ul style="display:none" class="block">
          <pre>
  /**
   * 这里是元素、属性的描述信息.
   * 更多描述信息
   * @public
   * @constructor
   * @param &lt;number&gt; arg1 这里可以加上参数描述信息
   * @param &lt;number&gt; arg2
   * @param 
   */
   Math.max = function(arg1,arg2){
       return arg1>arg2?arg1:arg2;
   }
          </pre>
    </ul>
    <ul onclick="more2less(this)" class="more-">
        <a href="#null" class="more-">实例...</a><a href="#null" class="less-" >↑收起</a>
    </ul>
    <h4>ID暗示</h4>
    <ul>
      <li><span class='item-title'>@owner</span>: 指定某个属性的归属对象【常用于一些动态代码导致自动查找归属失败时】</li>
      <li><span class='item-title'>@id</span>: 直接指定文档对应的脚本元素id，用于没有确定代码的脚本元素，支持*匹配</li>
    </ul><ul style="display:none" class="block">
          <pre>
    /** 
     * 输出&lt;b&gt;[$1]&lt;/b&gt;级别的日志信息
     * 这是JSI $log对象的文档
     * @public 
     * @param &lt;object&gt; arg1 第一个参数
     * @param &lt;object&gt; arg2 第一个参数
     * @arguments &lt;object&gt;arg... 第N个参数
     * 
     * @id $log.*
     */
          </pre>
   </ul>
   <ul onclick="more2less(this)" class="more-">
      <a href="#null" class="more-">实例...</a><a href="#null" class="less-" >↑收起</a>
   </ul>
</ul>
</div>

<div>
<br/>
<hr/>
<br/>
<a href="html/controller.html?@export">&gt;&gt;转至脚本导出页</a>
<script>
//2分钟后页面将跳转至脚本导出页面
//setTimeout("window.location = 'export.html'",2*60*1000)
</script>
</div>
<div id='footer' style="display:none">
页面通过客户端XML模板引擎自动生成(org/xidea/xml/template.js)。
该模板引擎实现简单，但一直没有做优化工作，效率不高；所以JSIDoc对于大文件的源码高亮显示有点慢。
如果您对这种实时解析的脚本API文档工具感兴趣，欢迎参与开发、完善，或者认领(管理)这个项目。
</div>
</body>
</html>
